package com.eastfair.imaster.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 观众注册异常信息表（预登记表）
 * </p>
 *
 * @author zjn
 * @since 2021-12-13
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("v_visitor_register_exception")
@ApiModel(value = "VisitorRegisterException", description = "观众注册异常信息表（预登记表）")
@AllArgsConstructor
public class VisitorRegisterException extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 用户账号id
     */
    @ApiModelProperty(value = "用户账号id")
    @TableField(value = "user_account_id")
    @Excel(name = "用户账号id")
    private Long userAccountId;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    @TableField(value = "exhibition_id")
    @Excel(name = "展会id")
    private Long exhibitionId;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    @Size(max = 64, message = "姓名长度不能超过64")
    @TableField(value = "name", condition = LIKE)
    @Excel(name = "姓名")
    private String name;

    /**
     * 英文名
     */
    @ApiModelProperty(value = "英文名")
    @Size(max = 64, message = "英文名长度不能超过64")
    @TableField(value = "en_name", condition = LIKE)
    @Excel(name = "英文名")
    private String enName;

    /**
     * 手机区号
     */
    @ApiModelProperty(value = "手机区号")
    @Size(max = 64, message = "手机区号长度不能超过64")
    @TableField(value = "mobile_country_code", condition = LIKE)
    @Excel(name = "手机区号")
    private String mobileCountryCode;

    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号")
    @Size(max = 16, message = "手机号长度不能超过16")
    @TableField(value = "mobile", condition = LIKE)
    @Excel(name = "手机号")
    private String mobile;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    @Size(max = 64, message = "邮箱长度不能超过64")
    @TableField(value = "email", condition = LIKE)
    @Excel(name = "邮箱")
    private String email;

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @Size(max = 8, message = "性别长度不能超过8")
    @TableField(value = "gender", condition = LIKE)
    @Excel(name = "性别")
    private String gender;

    /**
     * 头像
     */
    @ApiModelProperty(value = "头像")
    @Size(max = 128, message = "头像长度不能超过128")
    @TableField(value = "head_image_url", condition = LIKE)
    @Excel(name = "头像")
    private String headImageUrl;

    /**
     * 人脸
     */
    @ApiModelProperty(value = "人脸")
    @Size(max = 128, message = "人脸长度不能超过128")
    @TableField(value = "face_image_url", condition = LIKE)
    @Excel(name = "人脸")
    private String faceImageUrl;

    /**
     * 国家
     */
    @ApiModelProperty(value = "国家")
    @TableField(value = "country_id")
    @Excel(name = "国家")
    private Integer countryId;

    /**
     * 省份
     */
    @ApiModelProperty(value = "省份")
    @TableField(value = "province_id")
    @Excel(name = "省份")
    private Integer provinceId;

    /**
     * 城市
     */
    @ApiModelProperty(value = "城市")
    @TableField(value = "city_id")
    @Excel(name = "城市")
    private Integer cityId;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    @Size(max = 512, message = "地址长度不能超过512")
    @TableField(value = "address", condition = LIKE)
    @Excel(name = "地址")
    private String address;

    /**
     * 英文地址
     */
    @ApiModelProperty(value = "英文地址")
    @Size(max = 512, message = "英文地址长度不能超过512")
    @TableField(value = "en_address", condition = LIKE)
    @Excel(name = "英文地址")
    private String enAddress;

    /**
     * 证件类型
     */
    @ApiModelProperty(value = "证件类型")
    @Size(max = 16, message = "证件类型长度不能超过16")
    @TableField(value = "identification_type", condition = LIKE)
    @Excel(name = "证件类型")
    private String identificationType;

    /**
     * 证件号码
     */
    @ApiModelProperty(value = "证件号码")
    @Size(max = 64, message = "证件号码长度不能超过64")
    @TableField(value = "identification_number", condition = LIKE)
    @Excel(name = "证件号码")
    private String identificationNumber;

    /**
     * 证件照
     */
    @ApiModelProperty(value = "证件照")
    @Size(max = 128, message = "证件照长度不能超过128")
    @TableField(value = "identification_image_url", condition = LIKE)
    @Excel(name = "证件照")
    private String identificationImageUrl;

    /**
     * 电话
     */
    @ApiModelProperty(value = "电话")
    @Size(max = 32, message = "电话长度不能超过32")
    @TableField(value = "telephone", condition = LIKE)
    @Excel(name = "电话")
    private String telephone;

    /**
     * 部门
     */
    @ApiModelProperty(value = "部门")
    @Size(max = 32, message = "部门长度不能超过32")
    @TableField(value = "department", condition = LIKE)
    @Excel(name = "部门")
    private String department;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    @Size(max = 16, message = "邮编长度不能超过16")
    @TableField(value = "zip_code", condition = LIKE)
    @Excel(name = "邮编")
    private String zipCode;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    @Size(max = 64, message = "传真长度不能超过64")
    @TableField(value = "fax", condition = LIKE)
    @Excel(name = "传真")
    private String fax;

    /**
     * 社交媒体
     */
    @ApiModelProperty(value = "社交媒体")
    @Size(max = 64, message = "社交媒体长度不能超过64")
    @TableField(value = "social_media", condition = LIKE)
    @Excel(name = "社交媒体")
    private String socialMedia;

    /**
     * 工作证
     */
    @ApiModelProperty(value = "工作证")
    @Size(max = 128, message = "工作证长度不能超过128")
    @TableField(value = "work_pass", condition = LIKE)
    @Excel(name = "工作证")
    private String workPass;

    /**
     * 名片url
     */
    @ApiModelProperty(value = "名片url")
    @Size(max = 128, message = "名片url长度不能超过128")
    @TableField(value = "business_card_url", condition = LIKE)
    @Excel(name = "名片url")
    private String businessCardUrl;

    /**
     * 职位
     */
    @ApiModelProperty(value = "职位")
    @Size(max = 16, message = "职位长度不能超过16")
    @TableField(value = "post", condition = LIKE)
    @Excel(name = "职位")
    private String post;

    /**
     * 英文职位
     */
    @ApiModelProperty(value = "英文职位")
    @Size(max = 16, message = "英文职位长度不能超过16")
    @TableField(value = "en_post", condition = LIKE)
    @Excel(name = "英文职位")
    private String enPost;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    @Size(max = 64, message = "公司名称长度不能超过64")
    @TableField(value = "company_name", condition = LIKE)
    @Excel(name = "公司名称")
    private String companyName;

    /**
     * 公司英文名称
     */
    @ApiModelProperty(value = "公司英文名称")
    @Size(max = 128, message = "公司英文名称长度不能超过128")
    @TableField(value = "company_en_name", condition = LIKE)
    @Excel(name = "公司英文名称")
    private String companyEnName;

    /**
     * 公司地址
     */
    @ApiModelProperty(value = "公司地址")
    @Size(max = 512, message = "公司地址长度不能超过512")
    @TableField(value = "company_address", condition = LIKE)
    @Excel(name = "公司地址")
    private String companyAddress;

    /**
     * 公司英文地址
     */
    @ApiModelProperty(value = "公司英文地址")
    @Size(max = 512, message = "公司英文地址长度不能超过512")
    @TableField(value = "company_en_address", condition = LIKE)
    @Excel(name = "公司英文地址")
    private String companyEnAddress;

    /**
     * 公司所在国
     */
    @ApiModelProperty(value = "公司所在国")
    @TableField(value = "company_country_id")
    @Excel(name = "公司所在国")
    private Integer companyCountryId;

    /**
     * 公司品牌
     */
    @ApiModelProperty(value = "公司品牌")
    @Size(max = 64, message = "公司品牌长度不能超过64")
    @TableField(value = "company_brand", condition = LIKE)
    @Excel(name = "公司品牌")
    private String companyBrand;

    /**
     * 公司英文品牌
     */
    @ApiModelProperty(value = "公司英文品牌")
    @Size(max = 128, message = "公司英文品牌长度不能超过128")
    @TableField(value = "company_en_brand", condition = LIKE)
    @Excel(name = "公司英文品牌")
    private String companyEnBrand;

    /**
     * 公司电话区号
     */
    @ApiModelProperty(value = "公司电话区号")
    @Size(max = 64, message = "公司电话区号长度不能超过64")
    @TableField(value = "company_tel_country_code", condition = LIKE)
    @Excel(name = "公司电话区号")
    private String companyTelCountryCode;

    /**
     * 公司电话
     */
    @ApiModelProperty(value = "公司电话")
    @Size(max = 16, message = "公司电话长度不能超过16")
    @TableField(value = "company_telephone", condition = LIKE)
    @Excel(name = "公司电话")
    private String companyTelephone;

    /**
     * 公司邮箱
     */
    @ApiModelProperty(value = "公司邮箱")
    @Size(max = 64, message = "公司邮箱长度不能超过64")
    @TableField(value = "company_email", condition = LIKE)
    @Excel(name = "公司邮箱")
    private String companyEmail;

    /**
     * 公司邮编
     */
    @ApiModelProperty(value = "公司邮编")
    @Size(max = 16, message = "公司邮编长度不能超过16")
    @TableField(value = "company_zip_code", condition = LIKE)
    @Excel(name = "公司邮编")
    private String companyZipCode;

    /**
     * 公司登记证
     */
    @ApiModelProperty(value = "公司登记证")
    @Size(max = 128, message = "公司登记证长度不能超过128")
    @TableField(value = "company_registration_url", condition = LIKE)
    @Excel(name = "公司登记证")
    private String companyRegistrationUrl;

    /**
     * 公司网站前缀
     */
    @ApiModelProperty(value = "公司网站前缀")
    @Size(max = 16, message = "公司网站前缀长度不能超过16")
    @TableField(value = "company_website_prefix", condition = LIKE)
    @Excel(name = "公司网站前缀")
    private String companyWebsitePrefix;

    /**
     * 公司网站
     */
    @ApiModelProperty(value = "公司网站")
    @Size(max = 128, message = "公司网站长度不能超过128")
    @TableField(value = "company_website", condition = LIKE)
    @Excel(name = "公司网站")
    private String companyWebsite;

    /**
     * 公司传真
     */
    @ApiModelProperty(value = "公司传真")
    @Size(max = 64, message = "公司传真长度不能超过64")
    @TableField(value = "company_fax", condition = LIKE)
    @Excel(name = "公司传真")
    private String companyFax;

    /**
     * 总部名称
     */
    @ApiModelProperty(value = "总部名称")
    @Size(max = 64, message = "总部名称长度不能超过64")
    @TableField(value = "headquarters_name", condition = LIKE)
    @Excel(name = "总部名称")
    private String headquartersName;

    /**
     * 总部英文名称
     */
    @ApiModelProperty(value = "总部英文名称")
    @Size(max = 128, message = "总部英文名称长度不能超过128")
    @TableField(value = "headquarters_en_name", condition = LIKE)
    @Excel(name = "总部英文名称")
    private String headquartersEnName;

    /**
     * 总部地址
     */
    @ApiModelProperty(value = "总部地址")
    @Size(max = 512, message = "总部地址长度不能超过512")
    @TableField(value = "headquarters_address", condition = LIKE)
    @Excel(name = "总部地址")
    private String headquartersAddress;

    /**
     * 总部英文地址
     */
    @ApiModelProperty(value = "总部英文地址")
    @Size(max = 512, message = "总部英文地址长度不能超过512")
    @TableField(value = "headquarters_en_address", condition = LIKE)
    @Excel(name = "总部英文地址")
    private String headquartersEnAddress;

    /**
     * 总部所在国
     */
    @ApiModelProperty(value = "总部所在国")
    @TableField(value = "headquarters_country_id")
    @Excel(name = "总部所在国")
    private Integer headquartersCountryId;

    /**
     * 总部电话区号
     */
    @ApiModelProperty(value = "总部电话区号")
    @Size(max = 64, message = "总部电话区号长度不能超过64")
    @TableField(value = "headquarters_tel_country_code", condition = LIKE)
    @Excel(name = "总部电话区号")
    private String headquartersTelCountryCode;

    /**
     * 总部电话
     */
    @ApiModelProperty(value = "总部电话")
    @Size(max = 16, message = "总部电话长度不能超过16")
    @TableField(value = "headquarters_telephone", condition = LIKE)
    @Excel(name = "总部电话")
    private String headquartersTelephone;

    /**
     * 总部邮箱
     */
    @ApiModelProperty(value = "总部邮箱")
    @Size(max = 64, message = "总部邮箱长度不能超过64")
    @TableField(value = "headquarters_email", condition = LIKE)
    @Excel(name = "总部邮箱")
    private String headquartersEmail;

    /**
     * 总部品牌
     */
    @ApiModelProperty(value = "总部品牌")
    @Size(max = 64, message = "总部品牌长度不能超过64")
    @TableField(value = "headquarters_brand", condition = LIKE)
    @Excel(name = "总部品牌")
    private String headquartersBrand;

    /**
     * 总部英文品牌
     */
    @ApiModelProperty(value = "总部英文品牌")
    @Size(max = 128, message = "总部英文品牌长度不能超过128")
    @TableField(value = "headquarters_en_brand", condition = LIKE)
    @Excel(name = "总部英文品牌")
    private String headquartersEnBrand;

    /**
     * 总部网站前缀
     */
    @ApiModelProperty(value = "总部网站前缀")
    @Size(max = 16, message = "总部网站前缀长度不能超过16")
    @TableField(value = "headquarters_website_prefix", condition = LIKE)
    @Excel(name = "总部网站前缀")
    private String headquartersWebsitePrefix;

    /**
     * 总部网站
     */
    @ApiModelProperty(value = "总部网站")
    @Size(max = 128, message = "总部网站长度不能超过128")
    @TableField(value = "headquarters_website", condition = LIKE)
    @Excel(name = "总部网站")
    private String headquartersWebsite;

    /**
     * 总部传真
     */
    @ApiModelProperty(value = "总部传真")
    @Size(max = 64, message = "总部传真长度不能超过64")
    @TableField(value = "headquarters_fax", condition = LIKE)
    @Excel(name = "总部传真")
    private String headquartersFax;

    /**
     * 总部邮编
     */
    @ApiModelProperty(value = "总部邮编")
    @Size(max = 16, message = "总部邮编长度不能超过16")
    @TableField(value = "headquarters_zip_code", condition = LIKE)
    @Excel(name = "总部邮编")
    private String headquartersZipCode;

    /**
     * 来源 与观众来源一致
     */
    @ApiModelProperty(value = "来源 与观众来源一致")
    @Size(max = 16, message = "来源 与观众来源一致长度不能超过16")
    @TableField(value = "source", condition = LIKE)
    @Excel(name = "来源 与观众来源一致")
    private String source;

    /**
     * 是否已处理：1是；0否
     */
    @ApiModelProperty(value = "是否已处理：1是；0否")
    @TableField(value = "is_processed")
    @Excel(name = "是否已处理：1是；0否")
    private Integer isProcessed;

    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;


    @Builder
    public VisitorRegisterException(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Long userAccountId, Long projectId, Long exhibitionId, String name, String enName, 
                    String mobileCountryCode, String mobile, String email, String gender, String headImageUrl, String faceImageUrl, 
                    Integer countryId, Integer provinceId, Integer cityId, String address, String enAddress, String identificationType, 
                    String identificationNumber, String identificationImageUrl, String telephone, String department, String zipCode, String fax, 
                    String socialMedia, String workPass, String businessCardUrl, String post, String enPost, String companyName, 
                    String companyEnName, String companyAddress, String companyEnAddress, Integer companyCountryId, String companyBrand, String companyEnBrand, 
                    String companyTelCountryCode, String companyTelephone, String companyEmail, String companyZipCode, String companyRegistrationUrl, String companyWebsitePrefix, 
                    String companyWebsite, String companyFax, String headquartersName, String headquartersEnName, String headquartersAddress, String headquartersEnAddress, 
                    Integer headquartersCountryId, String headquartersTelCountryCode, String headquartersTelephone, String headquartersEmail, String headquartersBrand, String headquartersEnBrand, 
                    String headquartersWebsitePrefix, String headquartersWebsite, String headquartersFax, String headquartersZipCode, String source, Integer isProcessed, 
                    Integer isEnabled, Integer isDeleted) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.userAccountId = userAccountId;
        this.projectId = projectId;
        this.exhibitionId = exhibitionId;
        this.name = name;
        this.enName = enName;
        this.mobileCountryCode = mobileCountryCode;
        this.mobile = mobile;
        this.email = email;
        this.gender = gender;
        this.headImageUrl = headImageUrl;
        this.faceImageUrl = faceImageUrl;
        this.countryId = countryId;
        this.provinceId = provinceId;
        this.cityId = cityId;
        this.address = address;
        this.enAddress = enAddress;
        this.identificationType = identificationType;
        this.identificationNumber = identificationNumber;
        this.identificationImageUrl = identificationImageUrl;
        this.telephone = telephone;
        this.department = department;
        this.zipCode = zipCode;
        this.fax = fax;
        this.socialMedia = socialMedia;
        this.workPass = workPass;
        this.businessCardUrl = businessCardUrl;
        this.post = post;
        this.enPost = enPost;
        this.companyName = companyName;
        this.companyEnName = companyEnName;
        this.companyAddress = companyAddress;
        this.companyEnAddress = companyEnAddress;
        this.companyCountryId = companyCountryId;
        this.companyBrand = companyBrand;
        this.companyEnBrand = companyEnBrand;
        this.companyTelCountryCode = companyTelCountryCode;
        this.companyTelephone = companyTelephone;
        this.companyEmail = companyEmail;
        this.companyZipCode = companyZipCode;
        this.companyRegistrationUrl = companyRegistrationUrl;
        this.companyWebsitePrefix = companyWebsitePrefix;
        this.companyWebsite = companyWebsite;
        this.companyFax = companyFax;
        this.headquartersName = headquartersName;
        this.headquartersEnName = headquartersEnName;
        this.headquartersAddress = headquartersAddress;
        this.headquartersEnAddress = headquartersEnAddress;
        this.headquartersCountryId = headquartersCountryId;
        this.headquartersTelCountryCode = headquartersTelCountryCode;
        this.headquartersTelephone = headquartersTelephone;
        this.headquartersEmail = headquartersEmail;
        this.headquartersBrand = headquartersBrand;
        this.headquartersEnBrand = headquartersEnBrand;
        this.headquartersWebsitePrefix = headquartersWebsitePrefix;
        this.headquartersWebsite = headquartersWebsite;
        this.headquartersFax = headquartersFax;
        this.headquartersZipCode = headquartersZipCode;
        this.source = source;
        this.isProcessed = isProcessed;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
    }

}
